@echo off
chcp 65001 >nul
cls
color 0D

echo.
echo ════════════════════════════════════════════
echo   测试"获取位置"功能 - 获取真实位置
echo ════════════════════════════════════════════
echo.
echo 功能说明：
echo   即使在模拟定位状态下
echo   点击"获取位置"按钮
echo   也能获取并显示真实位置
echo.

timeout /t 2 >nul

echo [1/4] 编译安装...
call gradlew assembleDebug --quiet && adb install -r app\build\outputs\apk\debug\app-debug.apk >nul 2>&1
if errorlevel 1 (
    echo ❌ 失败
    pause
    exit /b 1
)
echo ✅ 完成

echo.
echo [2/4] 授予权限...
adb shell appops set com.example.munidingwei android:mock_location allow
adb shell pm grant com.example.munidingwei android.permission.ACCESS_FINE_LOCATION 2>nul
adb shell pm grant com.example.munidingwei android.permission.ACCESS_COARSE_LOCATION 2>nul
adb shell pm grant com.example.munidingwei android.permission.POST_NOTIFICATIONS 2>nul
echo ✅ 完成

echo.
echo [3/4] 启动应用...
adb logcat -c
adb shell am start -n com.example.munidingwei/.MainActivity
timeout /t 2 >nul
echo ✅ 完成

echo.
echo [4/4] 开始测试...
echo.
echo ════════════════════════════════════════════
echo  测试步骤
echo ════════════════════════════════════════════
echo.
echo  第 1 步：设置模拟位置
echo  ────────────────────────────────
echo  📱 请在手机上：
echo     1. 点击地图任意位置
echo     2. 设置为模拟位置
echo     3. 确认看到地址信息
echo.

pause

echo.
echo  第 2 步：验证模拟位置生效
echo  ────────────────────────────────
echo.
echo 检查当前系统位置...
adb shell dumpsys location | findstr "last mock location"
echo.
echo 如果看到模拟坐标，说明模拟位置已生效
echo.

pause

echo.
echo  第 3 步：获取真实位置（关键测试！）
echo  ────────────────────────────────
echo.
echo 📱 现在请在手机上：
echo     点击"获取位置"按钮
echo.
echo 👀 观察应用显示：
echo     应该切换到真实位置
echo     地址应该更新为真实地址
echo.
echo 📊 观察日志：
echo.

start "位置获取日志" cmd /k "color 0E && adb logcat -s LocationService:D | findstr /C:获取真实位置 /C:真实位置已 /C:暂时移除 /C:恢复模拟"

timeout /t 3 >nul

echo 按任意键查看实时日志...
pause >nul

echo.
echo  第 4 步：验证模拟恢复
echo  ────────────────────────────────
echo.
echo 等待 3 秒后，模拟位置应该自动恢复
echo.
echo 查看日志，应该看到：
echo   "✅ 真实位置已获取，恢复模拟位置"
echo.

timeout /t 5 >nul

echo.
echo  第 5 步：测试其他应用
echo  ────────────────────────────────
echo.
echo 打开微信或百度地图
echo 应该仍然能获取到模拟位置
echo.

pause

echo.
echo ════════════════════════════════════════════
echo  完整日志
echo ════════════════════════════════════════════
echo.

echo 查看完整的位置获取日志：
adb logcat -d -s LocationService:D | findstr /C:"获取" /C:"位置"

echo.
echo ════════════════════════════════════════════
echo  判断标准
echo ════════════════════════════════════════════
echo.
echo ✅ 成功的标志：
echo.
echo  1. 点击"获取位置"后
echo     → 日志显示"暂时移除 Mock Provider"
echo     → 日志显示"开始获取真实位置"
echo.
echo  2. 应用显示
echo     → 位置坐标切换到真实位置
echo     → 地址更新为真实地址
echo     → 地图移动到真实位置
echo.
echo  3. 3秒后
echo     → 日志显示"恢复模拟位置"
echo     → 其他应用仍能获取模拟位置
echo.
echo ❌ 失败的标志：
echo  - 点击后仍显示模拟位置
echo  - 地址没有更新
echo  - 日志没有相关输出
echo.
echo ════════════════════════════════════════════
echo  工作原理
echo ════════════════════════════════════════════
echo.
echo  1. 点击"获取位置"
echo     ↓
echo  2. 设置标志: isFetchingRealLocation = true
echo     ↓
echo  3. 暂时移除 Mock Provider
echo     ↓
echo  4. 系统切换回真实定位
echo     ↓
echo  5. 获取真实位置并显示
echo     ↓
echo  6. 3秒后恢复 Mock Provider
echo     ↓
echo  7. 其他应用继续获取模拟位置
echo.
echo 💡 这样既能让用户查看真实位置
echo    又不影响其他应用的模拟定位！
echo.
echo ════════════════════════════════════════════
echo.

pause


